Conventional distributed object systems include a notion of a remote object, and a reference to the remote object. But conventional distributed objects systems have typically employed computer generated and/or computer readable references to remote objects, which complicates, sometimes to the point of impossibility, human understanding of the object reference. Thus it has conventionally been difficult to monitor, analyze, understand and/or debug applications that employ such computer generated and/or readable references.
Conventional distributed object systems may generate, store and/or manipulate data concerning methods, fields and interfaces associated with remote objects and their references. Such data about data (metadata) has historically either not been available to users of the distributed object system and/or accessors of remote objects or, if available, has been difficult to acquire and/or understand. Thus, information concerning, for example, interfaces associated with a remote object, has typically not been examined by users of distributed objects systems and/or accessors of remote objects and thus opportunities for greater understanding and simpler management of such systems and objects may have been missed. For example, without access to remote object metadata it may be impossible to refine a proxy based on such remote information.
Similarly, the absence of information concerning remote objects has complicated, sometimes to the point of impossibility, the task of adapting and/or extending a remote object on a client. Thus, opportunities to customize objects and/or to add client side extensions to server side remote objects may have been missed.
A remote object and/or a proxy that are created and/or managed by a conventional distributed object system may have their lifetime controlled by the system. But, in the absence of information concerning access to such objects and/or proxies, and in the absence of metadata associated with such objects and/or proxies, efficiently controlling the lifetime of a remote object and/or its proxy may be complicated, with resulting undesirable results (e.g., memory leaks, objects consuming resources although there are no references to the object, etc.).
Thus, there remains a need for a distributed object system that offers features that mitigate problems associated with unreadable, unextendable remote objects whose lifetimes are inadequately monitored and/or controlled.